package models.vo {

  import org.restfulx.models.RxModel;

  [Resource(name="documentos_apresentados")]

  [Bindable]
  public class DocumentoApresentado extends RxModel {
    public static const LABEL:String = "id";

    public var entregue:Boolean;

    public var emissao:Date;

    public var validade:Date;

    public var observacao:String;

    [BelongsTo]
    public var documento:Documento;

    [BelongsTo]
    public var pleito:Pleito;

    [Ignored]
    public function get ordem():int {
      return getDocumento().ordem;
    }

    [Ignored]
    public function get descricaoBreve():String {
      return getDocumento().descricaoBreve;
    }

    public function DocumentoApresentado() {
      super(LABEL);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function getDocumento():Documento {
      if (!documento)
        documento = new Documento();
      return documento;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function vencido(dataComparacao:Date):Boolean {
      //TODO - à 01:00 está dando problema (deve ser o GMT)
      return (entregue && documento.expiravel && validade < dataComparacao);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function situacao(dataComparacao:Date):String {
      //TODO - à 01:00 está dando problema (deve ser o GMT)
      return (entregue) ?
        ((documento.expiravel && (validade < dataComparacao)) ? "Vencido" : "Ok") :
        ((documento.obrigatorio) ? "Ausente" : "-");
    }

  }
}
